Package Question2_5

Source Code of Question2_5.QuestionB

package Question2_5;
import CtCILibrary.LinkedListNode;

public class QuestionB {
  private static int length(LinkedListNode l) {
    if (l == null) {
      return 0;
    } else {
      return 1 + length(l.next);
    }
  }
 
  private static PartialSum addListsHelper(LinkedListNode l1, LinkedListNode l2) {
    if (l1 == null && l2 == null) {
      PartialSum sum = new PartialSum();
      return sum;
    }
    PartialSum sum = addListsHelper(l1.next, l2.next);
    int val = sum.carry + l1.data + l2.data;
    LinkedListNode full_result = insertBefore(sum.sum, val % 10);
    sum.sum = full_result;
    sum.carry = val / 10;
    return sum;
  }
 
  private static LinkedListNode addLists(LinkedListNode l1, LinkedListNode l2) {
    int len1 = length(l1);
    int len2 = length(l2);
    if (len1 < len2) {
      l1 = padList(l1, len2 - len1);
    } else {
      l2 = padList(l2, len1 - len2);
    }
    PartialSum sum = addListsHelper(l1, l2);
    if (sum.carry == 0) {
      return sum.sum;
    } else {
      LinkedListNode result = insertBefore(sum.sum, sum.carry);
      return result;
    }
  } 
 
  private static LinkedListNode padList(LinkedListNode l, int padding) {
    LinkedListNode head = l;
    for (int i = 0; i < padding; i++) {
      LinkedListNode n = new LinkedListNode(0, null, null);
      head.prev = n;
      n.next = head;
      head = n;
    }
    return head;
  }
 
  private static LinkedListNode insertBefore(LinkedListNode list, int data) {
    LinkedListNode node = new LinkedListNode(data, null, null);
    if (list != null) {
      list.prev = node;
      node.next = list;
    }
    return node;
  }
 
  public static int linkedListToInt(LinkedListNode node) {
    int value = 0;
    while (node != null) {
      value = value * 10 + node.data;
      node = node.next;
    }
    return value;
 
 
  public static void main(String[] args) {
    LinkedListNode lA1 = new LinkedListNode(3, null, null);
    LinkedListNode lA2 = new LinkedListNode(1, null, lA1);
    LinkedListNode lA3 = new LinkedListNode(5, null, lA2);
   
    LinkedListNode lB1 = new LinkedListNode(5, null, null);
    LinkedListNode lB2 = new LinkedListNode(9, null, lB1);
    LinkedListNode lB3 = new LinkedListNode(1, null, lB2)
   
    LinkedListNode list3 = addLists(lA1, lB1);
   
    System.out.println("  " + lA1.printForward());   
    System.out.println("+ " + lB1.printForward());     
    System.out.println("= " + list3.printForward())
   
    int l1 = linkedListToInt(lA1);
    int l2 = linkedListToInt(lB1);
    int l3 = linkedListToInt(list3);
   
    System.out.print(l1 + " + " + l2 + " = " + l3 + "\n");
    System.out.print(l1 + " + " + l2 + " = " + (l1 + l2));   
  }
}
TOP

Related Classes of Question2_5.QuestionB

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.